/**
 * 选择TAB
 */
jQuery.chooseTab=function(obj){
	var $item = $(obj);
	if($item.parent().hasClass("current")) return;
	var $tab = $item.parents(".tab");
	if(!$tab||$tab.length==0) return;
	
	$item.parent().siblings().removeClass("current");
	$item.parent().addClass("current");
	
	var itemId=$item.attr("item_id");
	var container=$(">div.content",$tab);
	var itemContent=container.children("div[item_id="+itemId+"]");
	if(itemContent.length>0){
		container.children().hide();
		itemContent.show();
	}else{
		container.children().hide();
		container.append("<div item_id="+itemId+">"+obj.innerHTML+"</div>");
		//$("<div item_id="+itemId+">"+obj.innerHTML+"</div>").appendTo(container);
	}
}

/**
 * 根据参数名称获取参数值
 * eg:?p1=123&p2=456
 * 当name为p1时返回123，为p2时返回456
 * @param name 参数名称，不区分大小写
 * @return 返回参数名称对应的值
 * @author chenxiang
 */
jQuery.getParam=function(name,href) {
	href=href||location;
    var r = (href.search+href.hash).match(new RegExp("[\?\&\#]" + name + "=([^\&|\#]*)(\&|\#?)", "i"));
    return r?unescape(r[1]):null;
}

/**
 * 操作cookie，有三种操作方式（设置cookie，获取cookie，删除cookie）
 * 1.当传value参数时为设置cookie操作；
 * 2.当传入name前带有减号“-”时表示删除名称为name的cookie
 * 	 注：要清除多个cookie时，多个带“-”的name间用“,”隔开
 * 3.当只传name时获取名称为name的cookie值
 * 4.不传任何参数时清除所有cookie
 * @param name cookie名称
 * @param value cookie名称对应的值
 * @param days cookie保存的天数，可以为小数
 * @author chenxiang
 */
jQuery.cookie=function(name,value,days){
	var set=function(name,value,days){
		var str= name + "="+ encodeURIComponent(value) + "; path=/";
		if (typeof days == 'number') {
	    	var exp  = new Date();    //new Date("December 31, 9998");
	    	exp.setTime(exp.getTime() + days*24*60*60*1000);
	    	str+="; expires=" + exp.toGMTString();
		}
	    document.cookie = str;
	}
	
	var get=function(name){
		var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
	    return arr?decodeURIComponent(arr[2]):null;
	}
	
	var dels=function(){
		var arrCookie = document.cookie.split(";");
		for(var i=0,l=arrCookie.length; i<l; i++)set(arrCookie[i],"",-1);
	}

	if(!name||name=="-"){
		dels();
		return;
	}
	
	if(value)//设置cookie
	{
		set(name,value,days)
	}else if(!value && value!==undefined){
		set(name,"",-1)
	}else if(name.indexOf("-")==0)//删除cookie
	{
		var arrCookie = name.split(",");
		for(var i=0,l=arrCookie.length; i<l; i++)
			if(arrCookie[i].indexOf("-")==0)
				set(arrCookie[i].substr(1),"",-1)
	}
	else//获取cookie      
	{
	    return get(name)||"";
	}
}

/**
 * 设为首页
 */
jQuery.setHome=function(url){
	url=url||location.href;
	try { 
		document.body.style.behavior = 'url(#default#homepage)'; 
		document.body.setHomePage(url); 
	} catch (e) { 
		if (window.netscape) { 
			try { 
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
			} catch (e) { 
				alert("此操作被浏览器拒绝！\n请在浏览器地址栏输入“about:config”并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。"); 
			} 
			var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); 
			prefs.setCharPref('browser.startup.homepage', url); 
		} 
	}
}

/**
 * 添加收藏
 */
jQuery.addFavorite=function(url,title){
	url=url||location.href;
	title=title||document.title;
	if(document.all) { 
		try{ 
			window.external.addFavorite(url, title); 
		}catch (e1){ 
			try{ 
				window.external.addToFavoritesBar(url, title); 
			}catch (e2){ 
				alert('加入收藏失败，请您手工加入。') 
			} 
		} 
	} else if (window.external) { 
		window.sidebar.addPanel(title, url,""); 
	} else { 
		alert('加入收藏失败，请您手工加入。') 
	} 
}
/**
 * 分页工具条
 * 使用示例：
 * 1 $.pageBar('pagebar',53,function(pageindex){})
 * 	参数说明：	
 * 		ID:'pagebar'
 * 		total:53
 * 		pagesize:20（这是默认值）
 * 		curpage:1（这是默认值）
 * 		action:function(pageindex)
 * 
 * 2.$.pageBar('pagebar',53,15,function(pageindex){})
 * 	参数说明：	
 * 		ID:'pagebar'
 * 		total:53
 * 		pagesize:15
 * 		curpage:1（这是默认值）
 * 		action:function(pageindex)
 * 
 * 3.$.pageBar('pagebar',53,15,2,function(pageindex){})
 * 	参数说明：	
 * 		ID:'pagebar'
 * 		total:53
 * 		pagesize:15
 * 		curpage:2
 * 		action:function(pageindex)
 * 
 * @param ID DIV标识ID或DIV对象
 * @param total	记录总数
 * @param pagesize	每页显示的记录数（默认为20条记录）
 * @param curpage 当前页（默认为第一页）
 * @param action	点击页码action（回调函数）
 * @author 陈祥
 */
jQuery.pageBar=function(ID,total,pagesize,curpage,action,simple){
	var render=typeof(ID)=="string"?$("#"+ID):$(ID);
	if(render.attr("loaded")=="true") return render;
	render.attr("loaded","true");
	var defPagesize=20,defCurpage=1;
	$.getScript("/js/ext/jquery.pagebar.js",function(){
		$.getCSS("/js/ext/jquery.pagebar.css",function(){
			simple=action===true||curpage===true||simple===true;
			
			if ( jQuery.isFunction( pagesize ) ) {
				action = pagesize;
				pagesize = defPagesize;
				curpage = defCurpage;
			} else if (jQuery.isFunction( curpage )){
				action = curpage;
				curpage = defCurpage;
			}
			
			var callback=function(pageIndex,event){
				event=event||window.event;
				event.cancelBubble = true; 
				try{
				e.stopPropagation();
				}catch(e){}
				$.fn.setCurrentPage(this,pageIndex);
				action(pageIndex)
				//这里进行ajax异步数据处理
				//通过提交表单，或着使用location.href
			}
			
			var render=typeof(ID)=="string"?$("#"+ID):$(ID);
			
			var setting={
				//pagebar 对象div
				renderTo: render,
                //总页码
				totalpage: Math.ceil(total/pagesize),
				//当前页码
				currentPage: curpage,
				//是否显示简单形式,简单形式：“首页、上一页、下一页、尾页”
				simple:simple,
				//点击页码action
				onClickPage : callback
			}
			
			$.fn.jpagebar(setting);
		})
	})
}

/**
 * 简单分页工具条，“首页、上一页、下一页、尾页”
 * 使用示例：
 * 1 $.pageBarEx('pagebar',53,function(pageindex){})
 * 	参数说明：	
 * 		ID:'pagebar'
 * 		total:53
 * 		pagesize:20（这是默认值）
 * 		curpage:1（这是默认值）
 * 		action:function(pageindex)
 * 
 * 2.$.pageBarEx('pagebar',53,15,function(pageindex){})
 * 	参数说明：	
 * 		ID:'pagebar'
 * 		total:53
 * 		pagesize:15
 * 		curpage:1（这是默认值）
 * 		action:function(pageindex)
 * 
 * 2.$.pageBarEx('pagebar',53,15,2,function(pageindex){})
 * 	参数说明：	
 * 		ID:'pagebar'
 * 		total:53
 * 		pagesize:15
 * 		curpage:2
 * 		action:function(pageindex)
 * 
 * @param ID DIV标识ID或DIV对象
 * @param total	记录总数
 * @param pagesize	每页显示的记录数（默认为20条记录）
 * @param curpage 当前页（默认为第一页）
 * @param action	点击页码action（回调函数）
 * @author 陈祥
 */
jQuery.pageBarEx=function(ID,total,pagesize,curpage,action){
	$.pageBar(ID,total,pagesize,curpage,action,true);
}

jQuery.toServiceUrl=function(url){
	if(url.match(/\/(.*)\.\w\??/)) return url;
	
	var root="/services";
	url=root+(url.indexOf("/")==0?url:"/"+url);
	return url+(url.indexOf("?")>0?"&":"?")+"_t="+(new Date().getTime());
}

jQuery.get=function( url, data, callback, type, async ) {
		async=!(data===false||callback===false||type===false||async===false);
		
		if ( jQuery.isFunction( data ) ) {
			type = type || callback;
			callback = data;
			data = null;
		}
		return $.ajax({
			type: "GET",
			url: $.toServiceUrl(url),
			data: data,
			success: callback,
			dataType: type||"json",
			cache: false,
			async: async===false?false:true
		});
}
jQuery.post=function( url, data, callback, type, async ) {
		// shift arguments if data argument was omited
		if ( jQuery.isFunction( data ) ) {
			type = type || callback;
			callback = data;
			data = {};
		}
		
		if(typeof(type)=="boolean"){
			async=type;
			type="json";
		}

		return $.ajax({
			type: "POST",
			url: $.toServiceUrl(url),
			data: data,
			success: callback,
			dataType: type||"json",
			cache: false,
			async: async===false?false:true
		});
	},

jQuery.put=function(url, data, callback, type, async){
		if ( jQuery.isFunction( data ) ) {
			type = type || callback;
			callback = data;
			data = {};
		}
		
		if(typeof(type)=="boolean"){
			async=type;
			type="json";
		}

		return $.ajax({
			type: "PUT",
			url: $.toServiceUrl(url),
			data: data,
			success: callback,
			dataType: type||"json",
			cache: false,
			async: async===false?false:true
		});
	},
	
jQuery.del=function( url, data, callback, type, async){
		if ( jQuery.isFunction( data ) ) {
			type = type || callback;
			callback = data;
			data = {};
		}
		
		if(typeof(type)=="boolean"){
			async=type;
			type="json";
		}

		return $.ajax({
			type: "DELETE",
			url: $.toServiceUrl(url),
			data: data,
			success: callback,
			dataType: type||"json",
			cache: false,
			async: async===false?false:true
		});
	}
